VTPM Tools: Fix threading bug in vtpm_manager while using NPTL. Now
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 16 Feb 2006 21:39:55 +0000 (22:39 +0100)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Thu, 16 Feb 2006 21:39:55 +0000 (22:39 +0100)
supports Linux Threads and NPTL threads. Also clean up vtpm Makefile.

Signed-off-by: Vinnie Scarlata <vincent.r.scarlata@intel.com>
tools/vtpm/Makefile
tools/vtpm_manager/Makefile
tools/vtpm_manager/manager/Makefile
tools/vtpm_manager/manager/vtpmd.c
tools/vtpm_manager/util/log.c

index 8224a9d3045afa27ac4d0f6914b43b1013bd065e..59efb7936cb1eee486d367473bc5b4f3a73ef2be 100644 (file)
@@ -22,10 +22,10 @@ install: build
        $(MAKE) -C $(VTPM_DIR) $@
 
 clean:
-       if [ -d $(TPM_EMULATOR_DIR) ]; \
+       @if [ -d $(TPM_EMULATOR_DIR) ]; \
                then $(MAKE) -C $(TPM_EMULATOR_DIR) clean; \
        fi
-       if [ -d $(VTPM_DIR) ]; \
+       @if [ -d $(VTPM_DIR) ]; \
                then $(MAKE) -C $(VTPM_DIR) clean; \
        fi
 
@@ -57,7 +57,7 @@ $(VTPM_DIR): $(TPM_EMULATOR_TARFILE)
        patch -p1 <../vtpm.patch
 
 build_sub:
-       if [ -e $(GMP_HEADER) ]; then \
+       @if [ -e $(GMP_HEADER) ]; then \
                $(MAKE) -C $(VTPM_DIR); \
                if [ "$(BUILD_EMULATOR)" = "y" ]; then \
                        $(MAKE) -C $(TPM_EMULATOR_DIR); \
index 16825a22793734ddfbfaa641cf85a1b8a2408235..f57b82facb0d766f8b28a938ba0853fbf12a4f10 100644 (file)
@@ -9,7 +9,7 @@ OPENSSL_HEADER  = /usr/include/openssl/crypto.h
 all: build
 
 build:
-       if [ -e $(OPENSSL_HEADER) ]; then \
+       @if [ -e $(OPENSSL_HEADER) ]; then \
                @set -e; for subdir in $(SUBDIRS); do \
                        $(MAKE) -C $$subdir $@; \
                done; \
index 6bf28e606678a41e38838e79fd817b39cf61ad00..e6f20f5a5e0e52ab11769e3586846d701eb232e4 100644 (file)
@@ -24,4 +24,4 @@ $(BIN): $(OBJS)
 
 # libraries
 LIBS += ../tcs/libTCS.a ../util/libTCGUtils.a ../crypto/libtcpaCrypto.a
-LIBS += -lcrypto -lpthread -lrt -lm
+LIBS += -lcrypto -lpthread -lm
index 8e07ac3587d62510b311d3e3cc5dce76d60a7536..a9fb9fedffd40c9e61688cd4f3ed86646e982729 100644 (file)
@@ -54,21 +54,15 @@ void signal_handler(int reason) {
 #ifndef VTPM_MULTI_VM
 
   if (pthread_equal(pthread_self(), vtpm_globals->master_pid)) {
-    if (reason >= 0) { // Reason is a signal
-      vtpmloginfo(VTPM_LOG_VTPM, "VTPM Manager shutting down for signal %d.\n", reason);
-    } else  {// Reason is a TPM_RESULT * -1
-      vtpmloginfo(VTPM_LOG_VTPM,"VTPM Manager shuting down for: %s\n", tpm_get_error_name(-1 * reason) );
-    }
-    
-    return;
+    vtpmloginfo(VTPM_LOG_VTPM, "VTPM Manager shutting down for signal %d.\n", reason);
   } else {
+    // For old Linux Thread machines, signals are delivered to each thread. Deal with them.
     vtpmloginfo(VTPM_LOG_VTPM, "Child shutting down\n");
     pthread_exit(NULL);
   }
-#else
+#endif
   VTPM_Stop_Service();
   exit(-1);
-#endif
 }
 
 struct sigaction ctl_c_handler;
@@ -127,8 +121,10 @@ int main(int argc, char **argv) {
   //Join the other threads until exit time.
   pthread_join(be_thread, NULL);
   pthread_join(dmi_thread, NULL);
-  
+#endif
+  vtpmlogerror(VTPM_LOG_VTPM, "VTPM Manager shut down unexpectedly.\n");
   VTPM_Stop_Service();
   return 0;
-#endif
 }
index 38382d76256fc475e8f3002af1b0c25814901f2d..75fe91a12a5cb457b10e2fe1748e48dda38e1828 100644 (file)
@@ -138,5 +138,5 @@ const char* tpm_get_error_name (TPM_RESULT code) {
     if (code == error_msgs[i].code) 
       return error_msgs[i].code_name;
   
-    return "Failed to find code name for given code";
+    return("Unknown Error Code");
 }